package edu.fasta.sisinfo2.poker;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class MesaEstandar{

	private int ciegaChica;
	private int ciegaGrande;
	private List cartasSobreLaMesa;
	private Mazo mazo;
	private Pozo pozo;
	
	/**
	 * Crea una mesa estandar nueva.
	 */
	public MesaEstandar() {	
		this.setPozo(new Pozo());
		this.setCiegaChica(100);
		this.setCiegaGrande(200);
		this.setMazo(new Mazo());
		this.setCartasSobreLaMesa(new ArrayList());
		
	}	
	/**
	 * FLOP Saca 3 cartas del mazo y se las da a la mesa.
	 */
	public void ponerFlop(){
		this.cartasSobreLaMesa.add(this.mazo.sacarCarta());
		this.cartasSobreLaMesa.add(this.mazo.sacarCarta());
		this.cartasSobreLaMesa.add(this.mazo.sacarCarta());
	}	
	/**
	 * TURN Saca 1 carta del mazo y se la da a la mesa.
	 */
	public void ponerTurn(){
		this.cartasSobreLaMesa.add(this.mazo.sacarCarta());
	}	
	/**
	 * RIVER Saca 1 carta del mazo y se la da a la mesa.
	 */
	public void ponerRiver(){
		this.cartasSobreLaMesa.add(this.mazo.sacarCarta());
	}
	/**
	 * Reparte dos cartas a cada jugador
	 * @param listaJugadores Lista de jugadores en la mesa.
	 */
	public void repartirInicial(List listaJugadores){
		this.getMazo().mezclar(); //mezclamos el mazo		
		Iterator it;
		for(int i=0; i<2;i++){ // le da 2 cartas a cada jugador
			it = listaJugadores.iterator();
			while(it.hasNext()){
				((JugadorImplementacion)it.next()).getMano().agregarCartaDeJugador(this.getMazo().sacarCarta());
			}
		}
	}	
		
	public void actualizarCartasJugadores(List listaJugadores){
				
		Iterator it;
		
			it = listaJugadores.iterator();
			while(it.hasNext()){
				((JugadorImplementacion)it.next()).getMano().setCartasMesa(getCartasSobreLaMesa());
			}
		}

	
	/**
	 * Muestra el Flop.
	 */
	public void imprimirFlop(){
		Carta unaCarta;
		for(int i=0; i<3; i++){
			unaCarta = (Carta) this.cartasSobreLaMesa.get(i);
			System.out.println("Carta "+ (i+1) + " del Flop: " + unaCarta.imprimirla());
		}
	}	
	/**
	 * Muesra el Turn.
	 */
	public void imprimirTurn(){
		Carta unaCarta = (Carta) this.cartasSobreLaMesa.get(3);
		
		System.out.println("Carta de Turn: " + unaCarta.imprimirla());
	}	
	/**
	 * Muestra el River.	
	 */
	public void imprimirRiver(){
		Carta unaCarta = (Carta) this.cartasSobreLaMesa.get(4);
		
		System.out.println("Carta de River: " + unaCarta.imprimirla());
	}
	/**
	 * @return Valor de la ciega chica.
	 */
	public int getCiegaChica() {
		return ciegaChica;
	}
	/**
	 * Setea el valor de la ciega chica.
	 * @param ciegaChica Nuevo valor ciega chica.
	 */
	public void setCiegaChica(int ciegaChica) {
		this.ciegaChica = ciegaChica;
		this.getPozo().setValorApuestaActual(getCiegaChica());
	}
	/**
	 * @return Valor de la ciega grande.
	 */
	public int getCiegaGrande() {
		return ciegaGrande;
	}
	/**
	 * Setea el valor de la ciega grande.
	 * @param ciegaChica Nuevo valor ciega grande.
	 */
	public void setCiegaGrande(int ciegaGrande) {
		this.ciegaGrande = ciegaGrande;
		this.getPozo().setValorApuestaActual(getCiegaGrande());
	}
	/**
	 * @return Mazo de la mesa.
	 */
	public Mazo getMazo() {
		return mazo;
	}
	/**
	 * Setea el mazo de la mesa.
	 * @param mazo Nuevo mazo.
	 */
	public void setMazo(Mazo mazo) {
		this.mazo = mazo;
	}
	/**
	 * @return Cartas sobre la mesa.
	 */
	public List getCartasSobreLaMesa() {
		return cartasSobreLaMesa;
	}
	/**
	 * Setea las cartas sobre la mesa.
	 * @param cartasSobreLaMesa Nuevas cartas sobre la mesa.
	 */
	public void setCartasSobreLaMesa(List cartasSobreLaMesa) {
		this.cartasSobreLaMesa = cartasSobreLaMesa;
	}
	public Pozo getPozo() {
		return pozo;
	}
	public void setPozo(Pozo pozo) {
		this.pozo = pozo;
	}

}
